// ==========================================================================
// 鎸夐敭鍚�   GPIO 寮曡剼    鎸夐敭鐮�     瀹忓畾涔�(鏂逛究璁板繂浣跨敤)
// S1       P1.1         101        S1_CODE
// S2       P1.4         102        S2_CODE

// S1,S2 涓や釜灏忔寜閽泦鎴愬湪 MSP-EXP432P401R 鏍稿績鏉夸笂,鏈ず渚嬫棤闇�杩炵嚎

// ==========================================================================
// 绋嬪簭璁捐: 2020.10.05 瑙ｆ案鍐�
// 鍙戝竷鐗堟湰: Key_S1S2_Scan_v3
// 瀛樺湪闂: 
//     1, 鎸変綇鏌愭寜閿笉鏀�, 鐢变簬姝荤瓑鎸夐敭閲婃斁鑰屽鑷寸▼搴忊�滃亣姝烩��;
//     2, 濡傛灉寰帶鍒跺櫒鍏朵粬寮�閿�鍗犵敤鏃堕棿澶�(渚嬪鍒锋柊鍥惧舰绛�),灏嗗鑷存寜閿搷搴斿樊;
//     3, 鏈ず渚嬫湭鑰冭檻澶氫釜鎸夐敭鍚屾椂鎸変笅鐨勬儏褰�;
//     4, 
// 鍚庣画淇敼: 
//     1, 
//     2, 

// ============================================================================
#include "Key_S1S2_Scan.h"   // 鐢ㄦ埛鑷畾涔夊ご鏂囦欢

// ==========================================================================
// 鈽呪槄鈽呮敞鎰忊槄鈽呪槄 杞欢寤舵椂鏃堕棿涓庡井鎺у埗鍣ㄦ椂閽熶富棰戙�佹槸鍚︽湁涓柇寮�閿�銆佺紪璇戝櫒鐗堟湰銆�
// 缂栬瘧浼樺寲绾у埆绛夋湁鍏筹紝闇�瑕佺簿纭欢鏃跺簲閲囩敤瀹氭椂鍣ㄤ骇鐢�
void DelayMs_S1S2(uint32_t dat)
{
    uint32_t i;
    while(dat--)
    {
        i = 428;        // 10ms @ MCLK = 3MHz
        while(i--);
    }
}
// ==========================================================================
// S1 S2 鎸夐敭寮曡剼璁剧疆
void Key_S1S2_GPIO_Init(void)
{
    // S1 -- P1.1
    P1->DIR &= ~BIT1;   // 寮曡剼璁剧疆涓�: 杈撳叆
    P1->REN |= BIT1;    // 浣胯兘杈撳叆涓�/涓嬫媺
    P1->OUT |= BIT1;    // 杈撳叆涓�/涓嬫媺: 涓婃媺
    // S2 -- P1.4
    P1->DIR &= ~BIT4;   
    P1->REN |= BIT4;    
    P1->OUT |= BIT4;    
}

// ============================================================================
// 鍑芥暟鍔熻兘: 鎵弿鎸夐敭, 娑堥櫎鎸夐敭鈥滄姈鍔ㄢ��, 鎸夐敭寮硅捣鍚庢墠杩斿洖(鎸変綇涓嶆斁瀵艰嚧绋嬪簭鈥滃亣姝烩��)
// 杩斿洖鍊� = 'X' 鏃犳寜閿�
// 杩斿洖鍊� : 101 = S1; 102 = S2

//        button=Key_S1S2_Scan(); //扫描按键
//        //不同按键设置不同恒温值
//        switch(button){
//        case S1_CODE:
//            temperature=30;
//            strcpy(temperaturechar, "30C");
//            LCD_TFT_ShowString(50,130,temperaturechar,FONT1608,Red,White);break;
//        case S2_CODE:
//            temperature=27;
//            strcpy(temperaturechar, "27C");
//            LCD_TFT_ShowString(50,130,temperaturechar,FONT1608,Red,White);break;
//        default:temperature=temperature;


char Key_S1S2_Scan(void)
{
    
    char Key_tmp;   // 鎸夐敭鐮�
    
    Key_tmp = 'X';  // 鏃犳寜閿椂璧嬪�间负 'X'
    // --------------------------------------------------------------------
    // 妫�鏌ユ寜閿� S1
    if((P1->IN & BIT1) == 0)    // 鎸夐敭鍙兘琚寜涓�
    {
        DelayMs_S1S2(10);  // 寤舵椂: 娑堥櫎鈥滄寜涓嬧�濇姈鍔�
        if((P1->IN & BIT1) == 0)    // 鍐嶆妫�娴嬫槸琚寜涓�
        {
            Key_tmp = S1_CODE;      // 鎸夐敭鍙�
        }
    }
    // --------------------------------------------------------------------
    // 妫�鏌ユ寜閿� S2
    if((P1->IN & BIT4) == 0)    // 鎸夐敭鍙兘琚寜涓�
    {
        DelayMs_S1S2(10);  // 寤舵椂: 娑堥櫎鈥滄寜涓嬧�濇姈鍔�
        if((P1->IN & BIT4) == 0)    // 鍐嶆妫�娴嬫槸琚寜涓�
        {
            Key_tmp = S2_CODE;      // 鎸夐敭鍙�
        }
    }
    // --------------------------------------------------------------------
    // 妫�娴嬫寜閿槸鍚﹂噴鏀�
    if(Key_tmp != 'X')  // 鍒ゆ柇鏄惁鏈夋寜閿�
    {
        // 绛夊緟鎸夐敭閲婃斁,濡傛灉涓嶉噴鏀�,绋嬪簭灏�"鍗℃"鍦ㄦ澶�
        while(1)
        {
            if((P1->IN & BIT1) && (P1->IN & BIT4))      // 鎸夐敭鍙兘閲婃斁
            {
                DelayMs_S1S2(10);  // 寤舵椂: 娑堥櫎鈥滄寜閿噴鏀锯�濇姈鍔�
                if((P1->IN & BIT1) && (P1->IN & BIT4))  // 鍐嶆妫�娴嬫槸鍚﹂噴鏀�
                {
                    break;
                }
            }
        }
    }
    // ------------------------------------------------------------------------
    return  Key_tmp;
}

// ==========================================================================
// End of file.

